Many modern software applications display three-dimensional representations of structures and scenes as part of a user interface. Three-dimensional (3D) graphics are used in a wide range of applications including video games, simulations, virtual reality applications, geospatial information applications, and applications for mapping and navigation. In many applications, 3D graphics are more useful than two-dimensional (2D) graphics at depicting real-world environments and locations because the normal interaction between humans and the real-world occurs in three dimensions.
In one form of 3D graphics, different objects in a scene are formed from a large number of polygons. The polygons form shapes and structures in a 3D scene. Since most computing devices only display graphics with a two-dimensional display, the 3D graphics are converted into a rasterized array of two-dimensional pixels for display. The 2D display depicts portions of the three-dimensional scene in a manner similar to how a camera takes a two-dimensional photograph of 3D scenes in the real world. Many 3D graphics systems and application programming interfaces (APIs), which include the Open Graphics Library (OpenGL) and the Direct 3D APIs, provide common structures and interfaces to specialized graphics hardware for generation of 3D images in an efficient manner. The 3D software interacts with general purpose and specialized digital computing hardware that generates the 3D graphics in an efficient manner. In particular, graphical processing units (GPUs) are hardware components that are configured to generate polygons and other graphical effects that form a 3D scene. Modern computing devices typically execute software with a combination of instructions for a central processing unit (CPU) and a GPU to generate the 3D scene and enable interaction with the 3D scene in some software applications. In some hardware embodiments, the functionality of the CPU and GPU are merged together, physically and optionally logically, into a single system on a chip (SoC) device.
Some 3D software applications are used to model virtual environments that correspond to real-world environments. For example, mapping and navigation applications produce 3D graphical depictions of a geographic region to assist a user in finding a point of interest or navigating to a destination. The 3D environment includes a large number of objects that represent real-world structures, including natural landmarks, roads, buildings, and other man-made structures. In addition to displaying the 3D objects in the virtual environment, the mapping and navigation applications often provide additional information about the objects in the environment. For example, mapping and navigation applications often highlight roads and display road names or numbers to assist in navigation. Mapping programs often display names and links to websites for points of interest around the map. Many devices that display 3D virtual environments are also connected to external databases through data networks, such as wireless data networks. The external databases store 3D models that depict roads, buildings, and other structures in a geographic region.
While 3D models that are loaded from external databases can be displayed in the virtual environment, the 3D objects often lack classification information to identify what the 3D model represents. For example, a 3D object that depicts a section of a highway does not include information that distinguishes the highway from another 3D object that depicts an office building. In order to display the 3D objects in an accurate context, a mapping or navigation program needs to classify the 3D objects in the virtual environment. Consequently, improvements to systems and methods for classifying and displaying 3D objects in a virtual environment would be beneficial.